﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Carteira.Carteira;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Cliente.Cliente;
using Sinacor.Infra.Common;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator
{
    class TranslatorCliente: 
            BaseTranslator<Model.Cliente , 
            ClienteResponse, 
            ModelCollection<Model.Cliente>,
            List<ClienteResponse>>
{
public override Model.Cliente Translate(ClienteResponse from)
{
    Model.Cliente to = new Model.Cliente();
    to.Codigo = from.Codigo;
    to.DigitoVerificador = from.DigitoVerificador;
    to.Apelido = from.Apelido;
    to.Nome = from.Nome;
    to.ComplementoNome = from.ComplementoNome;
    to.ClienteContaInvestimento = from.ClienteContaInvestimento;
    to.CPFCNPJ = from.CPFCNPJ;
    to.CPFCNPJTexto = from.CPFCNPJTexto;
    to.DataNascimentoFundacao = from.DataNascimentoFundacao;
    to.Dependencia = from.Dependencia;
    to.CodigoOperacionalCVM = from.CodigoOperacionalCVM;
    to.isClienteQualificado = from.isClienteQualificado;
    to.Origem = from.Origem;
    to.Assessor = from.Assessor;
    to.BancoDividendo = new TranslatorDadosBancarios().Translate( from.BancoDividendo);
    to.BancoContaCorrente = new TranslatorDadosBancarios().Translate(from.BancoContaCorrente);
    to.Telefone = new TranslatorTelefoneResponse().TranslateToList(from.Telefone);
    to.LimitesOperacionais = from.LimitesOperacionais;
    TranslatorEnumTipoTransmissaoOrdem   tipoTransmissaoOrdem = new TranslatorEnumTipoTransmissaoOrdem();
    Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoTransmissaoOrdem? tipoTransmissaoOrdemEnum = new    Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoTransmissaoOrdem();
    tipoTransmissaoOrdem.TranslateEnum(from.TransmissaoOrdem, out tipoTransmissaoOrdemEnum);
    to.TransmissaoOrdem = tipoTransmissaoOrdemEnum;
    to.Endereco = new TranslatorEndereco().TranslateToList(from.Endereco);
    to.PosicaoContasCorrente = new TranslatorPosicaoContasCorrente().Translate(from.PosicaoContasCorrente);
    to.PosicaoCustodia = new  TranslatorPosicaoCustodiaResponse().Translate(from.PosicaoCustodia);
    to.ClienteBroker = from.ClienteBroker;
    TranslatorEnumTipoSituacao tipoSituacao = new TranslatorEnumTipoSituacao();
    Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoSituacaoCliente? tipoSituacaoEnum = new  Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoSituacaoCliente();
    tipoSituacao.TranslateEnum(from.Situacao, out tipoSituacaoEnum);
    to.Situacao = tipoSituacaoEnum;
    to.isPessoaVinculada = from.isPessoaVinculada;
    to.TipoBloqueio = from.TipoBloqueio;
    to.DescricaoBloqueio = from.DescricaoBloqueio;
    to.isBloqueado = from.isBloqueado;
    to.CodigoCarteira = from.CodigoCarteira;
    TranslatorEnumTipoLiquidacao tipoLiquidacao = new TranslatorEnumTipoLiquidacao();
    Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoLiquidacao? tipoLiquidacaoEnum = new Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoLiquidacao();
    tipoLiquidacao.TranslateEnum(from.TipoLiquidacao , out tipoLiquidacaoEnum);
    to.TipoLiquidacao = tipoLiquidacaoEnum;
    to.PercentualReducaoAcrescimo = from.PercentualReducaoAcrescimo;
    to.CodigoClienteInstitucional = from.CodigoClienteInstitucional;
    to.PercentualTotal = from.PercentualTotal;
    to.isOperacaoCarteiraCliente = from.isOperacaoCarteiraCliente;
    to.TipoFaxDefault = from.TipoFaxDefault;
    to.isClienteBroker = from.isClienteBroker;
    to.DigitoClienteContaInvestimento = from.DigitoClienteContaInvestimento;
    to.ClienteContaDeposito = from.ClienteContaDeposito;
    to.DigitoClienteContaDeposito = from.DigitoClienteContaDeposito;
    to.IsContaInvestimento = from.IsContaInvestimento;

    return to;
}
}
}
